home *** CD-ROM | disk | FTP | other *** search
Wrap
GW-BASIC | 1983-01-26 | 29.0 KB | 751 lines
10 'COPYRIGHT 1983 DAVIDSON & ASSOCIATES 30 GOSUB 1640 50 GOSUB 6500 60 GOSUB 5980 70 GOSUB 2060 80 IF DISKERROR THEN 70 90 GOSUB 2670 100 IF DISKERROR THEN 70 110 GOSUB 2880 120 IF CHOICE=5 THEN 70 130 IF CHOICE=6 THEN 150 140 ON CHOICE GOSUB 3100,3620,5170,180: GOTO 110 150 GOSUB 7010 160 END 180 GOSUB 1440 190 GOSUB 1160 200 WHILE P <> ESCKEY AND WD < WRDS 210 GOSUB 4170 220 IF SEQUENCE=5 THEN GOSUB 1070 230 GOSUB 910 240 GOSUB 730 250 GOSUB 310 260 WD=WD+1 270 WEND 280 GOSUB 1340 290 RETURN 310 WHILE P <> ESCKEY AND NOT NU 320 P$=INKEY$:IF P$<>"" THEN P=ASC(P$) ELSE P=0 330 IF P=SHT OR P=SHTT THEN GOSUB 450 340 IF P=LK OR P=LKK OR P=RK OR P=RKK THEN GOSUB 400 350 IF BUGTIMER > BUGTIME THEN GOSUB 630 360 TIMER=TIMER+1:IF TIMER > REDUCETIMER THEN GOSUB 580 370 WEND 380 RETURN 400 IF SOUNDD THEN SOUND 1000,1: SOUND 500,1 410 LOCATE 16:J=SH(SH,0,MODE):FOR I=0 TO 3:LOCATE ,J:PRINT " ":NEXT:IF (P=LK OR P=LKK) AND SH > 0 THEN SH=SH-1 ELSE IF (P=RK OR P=RKK) AND SH < 3 THEN SH=SH+1 420 COLOR BRN:LOCATE 16:J=SH(SH,0,MODE):FOR I=0 TO 3:LOCATE ,J:PRINT MAN$(I): NEXT:TIMER=TIMER+5 430 RETURN 450 IF SOUNDD THEN FOR I=50 TO 250 STEP 100:SOUND I,1:NEXT 460 COLOR FG:LOCATE 17,SH(SH,0,MODE):PRINT HEAD$(0):LOCATE ,SH(SH,O,MODE):PRINT HEAD$(1):IF BUGTIMER > BUGTIME THEN J=11 ELSE J=SH(SH,1,MODE)+3 470 IF SOUNDD THEN SOUND 500,1 480 FOR I=15 TO J STEP -1:LOCATE I,SH(SH,0,MODE):PRINT MAN$(0):LOCATE ,SH (SH,0,MODE):PRINT " ":NEXT 490 IF J=11 AND SH(SH,0,MODE)=BUG+(LEVEL > 4) THEN GOSUB 990:GOTO 560 500 IF SH=RANS-1 AND J < 11 THEN GOSUB 800 510 LOCATE J,SH(SH,0,MODE):PRINT " " 520 COLOR BRN:LOCATE 16:FOR I=0 TO 3:LOCATE ,SH(SH,0,MODE):PRINT MAN$(I):NEXT 530 IF SH <> RANS-1 AND J < 11 THEN GOSUB 950: 'WRONG ANSWER 540 IF J < 11 THEN NU=-1 550 TIMER=0 560 RETURN 580 IF BUGTIMER > BUGTIME THEN 610 590 LOCATE TIME,39-33*MONO:PRINT " ":TIME=TIME+1:TIMER=0:IF SOUNDD THEN SOUND 65,1 600 BUGTIMER=BUGTIMER+1:IF TIME=20 THEN NU=-1:TIME=19:GOSUB 960 610 RETURN 630 IF BUGTIMER=BUGTIME+1 THEN BUGCOUNT=BUGCOUNT+1:BUGTIMER=BUGTIMER+1:IF BUGCOUNT < 6 AND SOUNDD THEN RESTORE 710:FOR I=1 TO 5:READ J:READ K:SOUND J,K:NEXT 640 IF BUGCOUNT > 5 THEN BUGTIMER=0:GOTO 700 650 ZZ=NOT ZZ:IF LEVEL > 2 THEN ZZ=0 660 COLOR GREEN:LOCATE 11,BUG:PRINT BUG$(BUGCOUNT):IF NOT ZZ THEN BUG=BUG+1 670 IF SOUNDD AND NOT ZZ THEN SOUND 5587,1 680 IF NOT ZZ AND LEVEL > 4 THEN BUG=BUG+1 690 IF BUG > 35-30*MONO THEN LOCATE 11,36-30*MONO:PRINT " ":BUGTIMER=0:BUG=1- 10*MONO:TIMER=0 700 RETURN 710 DATA 1047,2,1175,2,1319,2,1397,2,1047,3 730 COLOR RED:FOR K=0 TO 2:LOCATE SH(SH,1,MODE)+K,SH(SH,2,MODE):PRINT BOX$(K,1); :NEXT 740 FOR K=0 TO 2:LOCATE SH(SH,1,MODE)+K,SH(SH,2,MODE):PRINT BOX$(K,1);:NEXT 750 COLOR FG:FOR I=0 TO 3:LOCATE SH(I,1,MODE)+1,SH(I,2,MODE)+1:PRINT CLEARR$;: LOCATE ,SH(I,3,MODE)-LEN(ANSR$(I))/2:PRINT ANSR$(I):NEXT 760 LOCATE 22,1-21*MONO:PRINT STRING$(40,32):A$=ARRAY$(QUIZ(WD)*8+1):K=20-LEN (A$)/2-19*MONO:IF K < 1 THEN K=1 770 LOCATE 22,K:PRINT A$:NU=0 780 RETURN 800 LOCATE J,SH(SH,0,MODE):PRINT " " 810 FOR I=0 TO 2:LOCATE SH(SH,1,MODE)+I,SH(SH,2,MODE):PRINT BOX$(I,2);:NEXT 820 LOCATE SH(SH,1,MODE)+1,SH(SH,3,MODE)-LEN(ANSR$(SH))/2:PRINT ANSR$(SH) 830 IF SOUNDD THEN FOR I=1 TO 9:SOUND 600,1:SOUND 650,1:NEXT 840 FOR I=2 TO 0 STEP-1:FOR K=0 TO 2:LOCATE SH(SH,1,MODE)+K,SH(SH,2,MODE):PRINT BOX$(K,I);:NEXT:LOCATE SH(SH,1,MODE)+1,SH(SH,3,MODE)-LEN(ANSR$(SH))/2:PRINT ANSR$(SH):NEXT 850 FOR I=0 TO 2:LOCATE SH(SH,1,MODE)+I,SH(SH,2,MODE):PRINT STRING$ (15-4*MONO,32);:NEXT 860 COLOR LITEGREEN:SCRE=SCRE+VLUE:LOCATE 25,12-18*MONO:PRINT SCRE; 870 SEQUENCE=SEQUENCE+1:LOCATE 25,6-SEQUENCE-4*MONO-((6-SEQUENCE)*MONO): PRINT " "; 880 A$=INKEY$:IF A$ <> "" THEN 880 890 RETURN 910 COLOR RED:FOR I=TIME TO THEIGHT STEP-1:LOCATE I,39-33*MONO:PRINT CHR$ (219+42*MONO):NEXT:TIME=THEIGHT 920 A$=INKEY$:IF A$ <> "" THEN 920 930 RETURN 950 COLOR LITEGREEN:SEQUENCE=0:LOCATE 25,1-5*MONO:FOR I=1 TO 5:PRINT S$(LEVEL) SPC(-MONO):NEXT 960 COLOR BG,FG:LOCATE SH(RANS-1,1,MODE)+1,SH(RANS-1,2,MODE)+1: PRINT CLEARR$;: LOCATE ,SH(RANS-1,3,MODE)-LEN(ANSR$(RANS-1))/2:PRINT ANSR$(RANS-1):COLOR FG ,BG 970 RETURN 990 COLOR LITEGREEN:LOCATE 11,SH(SH,0,MODE)-5+(SH=3):PRINT CHR$(15);" BONUS";2* VLUE;CHR$(15) 1000 IF SOUNDD THEN FOR I=1 TO 16:SOUND 850,1:SOUND 880,1:NEXT ELSE FOR I=1 TO 3000:NEXT 1010 BUGTIMER=0:BUG=1-10*MONO:SCRE=SCRE+(2*VLUE):TIMER=0 1020 LOCATE 25,12-18*MONO:PRINT SCRE; 1030 LOCATE 11,SH(SH,0,MODE)-5+(SH=3):PRINT " " 1040 COLOR BRN:LOCATE 16:FOR I=0 TO 3:LOCATE,SH(SH,0,MODE):PRINT MAN$(I):NEXT 1050 RETURN 1070 SEQUENCE=0:IF LEVEL < 5 THEN LEVEL=LEVEL+1 1080 VLUE=LEVEL*(100+(50*(SD-1))) 1090 COLOR ACCENT:LOCATE 11,15-19*MONO:PRINT "- LEVEL";LEVEL;"-" 1100 IF SOUNDD THEN FOR I=1 TO 15:SOUND 100,1:SOUND 110,1:NEXT ELSE FOR I=1 TO 2000:NEXT 1110 COLOR LITEGREEN:LOCATE 25,24-25*MONO:PRINT VLUE;:IF VLUE > 999 AND CLR THEN LOCATE ,29:PRINT "H"; 1120 LOCATE 25,1-5*MONO:FOR I=1 TO 5:PRINT S$(LEVEL) SPC(-MONO):NEXT:PRINT " "; 1130 LOCATE 11,15-19*MONO:PRINT " " 1140 RETURN 1160 CLS:COLOR BLUE 1170 A$=INKEY$:IF A$ <> "" THEN 1170 1180 LOCATE 20,2-4*MONO:PRINT STRING$(35-34*MONO,196) 1190 LOCATE 24,1-5*MONO:PRINT STRING$(39-31*MONO,196); 1200 LEVEL=1:TIMER=0:SH=1:MODE=-1*MONO:TIME=19:COLOR FG 1210 COLOR LITEGREEN:LOCATE 25,1-5*MONO:FOR I=1 TO 5:PRINT S$(LEVEL) SPC(-MONO): NEXT:PRINT SPC(1-7*MONO) "Score" SPC(1-MONO) "000" SPC(3-6*MONO) "Value" SPC(-MONO) VLUE SPC(-9*MONO) "High" SPC(-MONO) HI; 1220 SEQUENCE=0:BUG=1-10*MONO:BUGCOUNT=0:BUGTIMER=0:WD=0:LEVEL=1 1230 VLUE=100+(50*(SD-1)):COLUMN=0:ESC=0:P=0:SCRE=0 1240 CLEARR$=STRING$(13-4*MONO,32):COLOR BLUE 1250 FOR I=THEIGHT TO 19:LOCATE I,38-33*MONO:PRINT CHR$(179);CHR$(32);CHR$(179): NEXT 1260 LOCATE 20,38-33*MONO:PRINT CHR$(192);CHR$(196);CHR$(217) 1270 COLOR BRN:LOCATE 16:FOR I=0 TO 3:LOCATE ,SH(1,0,MODE):PRINT MAN$(I):NEXT 1280 COLOR RED:FOR I=0 TO 3:K=SH(I,1,MODE):L=SH(I,2,MODE):FOR J=0 TO 2:LOCATE K+J,L:PRINT BOX$(J,1);:NEXT:NEXT 1290 GOSUB 910 1300 IF SOUNDD THEN RESTORE 1320:FOR I=1 TO 7:READ J:READ K:SOUND J,K:NEXT 1310 RETURN 1320 DATA 523,7,659,3,783,6,523,3,659,3,783,3,523,6 1340 COLOR FG:LOCATE 11:FOR I=1 TO 15-20*MONO:LOCATE ,I:PRINT " GAME";:IF SOUNDD THEN SOUND 400+I*10,1 1350 NEXT 1360 FOR I=30-36*MONO TO 21-20*MONO STEP-1:LOCATE ,I:PRINT "OVER ";:IF SOUNDD THEN SOUND 800+I*10,1 1370 NEXT 1380 A$="Final Score"+STR$(SCRE):LOCATE 13,20-20*MONO-LEN(A$)/2:PRINT A$ 1390 IF SOUNDD THEN FOR I=1 TO 20:SOUND 1200,1:SOUND 1400,1:NEXT 1400 IF SCRE > HI THEN LOCATE 22,1:COLOR -25*(FG=7 AND NOT MONO)-16* (FG=0)-26*(FG=7 AND MONO):PRINT SPC(11-20*MONO) "New High Score" SPC(13-20*MONO):HI=SCRE 1410 FOR I=1 TO 10000:NEXT:IF NOT SOUNDD THEN FOR I=1 TO 2000:NEXT 1420 RETURN 1440 GOSUB 6460:I=6-11*MONO:COLOR ACCENT 1450 LOCATE 5,I:PRINT "Word Attack! speeds:":COLOR FG 1460 LOCATE 8,I:PRINT "1. Regular Speed":PRINT 1470 LOCATE ,I:PRINT "2. Faster Speed":PRINT 1480 LOCATE ,I:PRINT "3. Fastest Speed":PRINT:PRINT:PRINT 1490 COLOR ACCENT:LOCATE ,I:PRINT "Please select speed (press 1-3)":COLOR FG 1500 A$=INKEY$:IF A$ <> "" THEN 1500 1510 GOSUB 4100: 'RANDOMIZE 1520 A$=INKEY$:SD=VAL(A$):IF SD < 1 OR SD > 3 THEN 1520 1530 REDUCETIMER=10:THEIGHT=10:IF SD > 1 THEN REDUCETIMER=10:THEIGHT=13:IF SD>2 THEN REDUCETIMER=16:THEIGHT=17 1540 BUGTIME=25-6*SD:VLUE=100+(50*(SD-1)) 1550 RETURN 1570 FOR J=0 TO 2 1580 BOX$(0,J)=STRING$(15-4*MONO,176+J) 1590 BOX$(1,J)=CHR$(176+J)+STRING$(13-4*MONO,32)+CHR$(176+J) 1600 BOX$(2,J)=STRING$(15-4*MONO,176+J):NEXT 1610 CLEARR$=STRING$(13-4*MONO,32):COLOR FG,BG 1620 RETURN 1640 COMMON ANSR$(),ARRAY$(),QUIZ(),WANSR(),SH(),BOX$(),S$(),MAN$(),HEAD$(),DD, BUG$(),FG,BG,MONO,NAMEE$,SOUNDD 1650 DIM MAN$(3),HEAD$(1),BUG$(5),SH(3,3,1),BOX$(2,2),S$(5):I=0:SH=0:SHT=0:SHTT= 0:LK=0:LKK=0:RK=0:RKK=0:ESCKEY=0:TIME=0:TIMER=0:BUGTIME=0:BUGTIMER=0:ZZ=0: LEVEL=0:BUGCOUNT=0:J=0:P=0:BUG=0 1660 DIM ANSR$(3),ARRAY$(203),QUIZ(25),WANSR(25) 1670 SCREEN 0,0,0,0:KEY OFF:DEF SEG=0:IF (PEEK(&H410) AND &H30)=&H30 THEN MONO = -1:CLR=0:FG=0:BG=7:WIDTH 80:ELSE MONO=0:CLR=-1:FG=7:BG=0: WIDTH 40:SCREEN ,1 1680 GOSUB 1570 1700 SHT=90:SHTT=122:LK=75:LKK=107:RK=76:RKK=108:ESCKEY=27:SPACEBAR=32 1710 I%=0:DUPE=0:WRD=0:ANSR=0:K=0:ANSR=0:K=0:RANS=0:NU=-1:SEQUENCE=0:VLUE=0: SPED=0:S$="" 1720 ACCENT=-CLR*(9+8*(FG=0))-MONO*FG 1730 GREEN=-CLR*2-MONO*FG 1740 BRN=-CLR*6-MONO*FG 1750 RED=-CLR*4-MONO*FG 1760 BLUE=-CLR*1-MONO*FG 1770 LITEGREEN=-CLR*(10+8*(FG=0))-MONO*FG 1790 RESTORE 1810 1800 FOR I=0 TO 3:FOR J=0 TO 3:READ SH(I,J,0):NEXT:NEXT 1810 DATA 8,5,1,8 1820 DATA 16,1,5,12 1830 DATA 22,1,22,29 1840 DATA 30,5,26,33 1860 FOR I=0 TO 3:FOR J=0 TO 3:READ SH(I,J,1):NEXT:NEXT 1870 DATA 17,5,8,17 1880 DATA 31,1,20,29 1890 DATA 46,1,42,51 1900 DATA 60,5,54,63 1930 FOR I=0 TO 3:SH(I,1,1)=SH(I,1,1)-(FG=0):NEXT 1940 S$(1)="*":S$(2)="INSTR":S$(3)="-":S$(4)="PRINT":S$(5)="\" 1950 MAN$(0)=CHR$(95)+CHR$(47)+CHR$(92)+CHR$(95) 1960 MAN$(1)=CHR$(218)+CHR$(196)+CHR$(196)+CHR$(191) 1970 MAN$(2)=CHR$(192)+CHR$(196)+CHR$(196)+CHR$(217) 1980 MAN$(3)=CHR$(196)+CHR$(217)+CHR$(192)+CHR$(196) 1990 HEAD$(0)=CHR$(218)+CHR$(94)+CHR$(94)+CHR$(191) 2000 HEAD$(1)=CHR$(192)+CHR$(248)+CHR$(248)+CHR$(217) 2010 BUG$(1)=" "+CHR$(247):BUG$(2)=" "+CHR$(127) 2020 BUG$(3)=" "+CHR$(232):BUG$(4)=" "+CHR$(224) 2030 BUG$(5)=" "+CHR$(237) 2040 RETURN 2060 GOSUB 6460: DISKERROR = 0:COLOR ACCENT 2070 LOCATE 3:FOR I=0 TO 3:LOCATE ,4-11*MONO:PRINT MAN$(I):NEXT:COLOR FG 2080 LOCATE 4,11-17*MONO:PRINT "W O R D";STRING$(2-4*MONO,32);"A T T A C K": COLOR ACCENT 2090 LOCATE 3:FOR I=0 TO 3:LOCATE ,34-28*MONO:PRINT MAN$(I):NEXT 2100 LOCATE 6,11-13*MONO:PRINT STRING$(20-12*MONO,205):COLOR FG 2110 LOCATE 11+N,14-20*MONO:PRINT "Word lists are" 2120 PRINT:LOCATE ,9-20*MONO:PRINT "available for levels 1-9." 2130 LOCATE 17+N,10-20*MONO:PRINT "Please select a level":PRINT 2140 LOCATE ,12-20*MONO:PRINT "by pressing 1-9.":COLOR ACCENT 2150 LOCATE 24,3-20*MONO:PRINT "Press S to Change the Screen Display"; 2160 IF N THEN LOCATE 22,6-20*MONO:PRINT "Press P to Run Preview program" 2170 COLOR FG,BG 2180 A$=INKEY$:IF A$ <> "" THEN 2180 2190 FOR I=0 TO 200:ARRAY$(I)="":NEXT 2200 A$=INKEY$:IF A$ = "" THEN 2200 2210 IF A$="S" OR A$="s" THEN GOSUB 7230:GOTO 2060 2220 IF A$="P" OR A$="p" THEN GOSUB 7420:GOTO 2060 2230 IF A$="D" OR A$="d" THEN GOSUB 2310:GOTO 2290 2240 IF A$="E" OR A$="e" THEN GOSUB 8240:GOTO 2060 2250 A=VAL(A$):IF A < 1 OR A > 9 THEN 2180 2260 SUFFIX$=RIGHT$(STR$(A),1) 2270 IF N THEN GOSUB 6290 2280 GOSUB 2460: 'FILE MENU 2290 RETURN 2310 IF N THEN GOSUB 6290 2320 ON ERROR GOTO 2420 2330 IF DD=2 THEN A$="b:*.*" ELSE A$="" 2340 CLS:IF DD=1 THEN FILES ELSE FILES "B:*.*" 2350 PRINT:PRINT:INPUT "File to load? ",FILE$ 2360 IF FILE$="" THEN DISKERROR=-1:GOTO 2380 2370 PRINT:PRINT "Loading file" 2380 ON ERROR GOTO 0 2390 TITLE$=FILE$ 2400 RETURN 2420 PRINT:PRINT:BEEP:PRINT "Disk error":FOR I=1 TO 3000:NEXT 2430 DISKERROR=-1 2440 RESUME 2380 2460 GOSUB 6460:COLOR ACCENT 2470 LOCATE 3,17-19*MONO:PRINT "Level";A 2480 I=14-19*MONO:J=7-7*MONO:LOCATE 6,J 2490 PRINT "At this level, the following ";:IF NOT MONO THEN PRINT:PRINT:LOCATE ,J 2500 PRINT "word lists are available:":COLOR FG 2510 LOCATE 12+MONO,I:PRINT "1. Adjectives" 2520 PRINT:LOCATE ,I:PRINT "2. Nouns" 2530 PRINT:LOCATE ,I:PRINT "3. Verbs":COLOR ACCENT 2540 LOCATE 21+MONO,5-19*MONO:PRINT "Please select word list by number" 2550 A$=INKEY$:IF A$ <> "" THEN 2550 2560 A$=INKEY$:IF A$="" THEN 2560 2570 A=VAL(A$):IF A < 1 OR A > 3 THEN 2560 2580 IF A=1 THEN B$=" Adjectives":A$="ADJ" 2590 IF A=2 THEN B$=" Nouns":A$="NOUNS" 2600 IF A=3 THEN B$=" Verbs":A$="VERBS" 2610 FILE$=A$+SUFFIX$ 2620 TITLE$="Level "+SUFFIX$+B$ 2630 LOCATE 21+MONO,4-19*MONO:PRINT " " 2640 LOCATE 21+MONO,12-19*MONO:PRINT "Loading Word List" 2650 RETURN 2670 ON ERROR GOTO 2780 2680 LMAX=0:I=FRE(""):DISKERROR=0:IF DD=2 THEN FILE$="B:"+FILE$ 2690 OPEN FILE$ FOR INPUT AS #1 2700 WHILE NOT EOF(1) 2710 INPUT #1, ARRAY$(LMAX) 2720 LMAX=LMAX+1 2730 WEND:CLOSE 2740 LMAX=LMAX-1:SPED=10:HI=2000 2750 ON ERROR GOTO 0 2760 RETURN 2780 RESTORE 2860:ERRNUMBER=0:DISKERROR=-1:GOSUB 6460:COLOR ACCENT 2790 READ ERRNUMBER, ERRORMESSAGE$: IF ERR <> ERRNUMBER AND ERRNUMBER <> 72 THEN 2790 2800 LOCATE 8,10-20*MONO:PRINT "Error Loading the File" 2810 LOCATE 12,12-20*MONO:PRINT "IBM ERROR CODE";ERR 2820 LOCATE 15,18-20*MONO - LEN(ERRORMESSAGE$)/2 2830 IF ERR=ERRNUMBER THEN PRINT ERRORMESSAGE$;" error" 2840 GOSUB 6370 2850 RESUME 2750 2860 DATA 24,Device timeout,53,File not found,57,Device input/output,68, Device unavailable,71,Disk not ready,72,Disk media 2880 GOSUB 6460:COLOR ACCENT 2890 LOCATE 3,5-7*MONO:PRINT TITLE$ 2900 I=35-30*MONO:LOCATE 4:A$="WORD ATTACK" 2910 FOR J=1 TO LEN(A$):LOCATE ,I:PRINT MID$(A$,J,1):NEXT:COLOR FG 2920 I=5-7*MONO:LOCATE 7,I:PRINT "1. Word Display" 2930 PRINT:LOCATE ,I:PRINT "2. Multiple Choice Quiz" 2940 PRINT:LOCATE ,I:PRINT "3. Sentence Completion" 2950 PRINT:LOCATE ,I:PRINT "4. Word Attack!" 2960 PRINT:LOCATE ,I:PRINT "5. Load a New Word List" 2970 PRINT:LOCATE ,I:PRINT "6. Stop for Now" 2980 COLOR ACCENT:LOCATE 20-MONO,I:PRINT "Please press a number from ";:IF NOT MONO THEN PRINT:PRINT:LOCATE ,I 2990 PRINT "1 to 6 to indicate your choice" 3000 A$=INKEY$:IF A$ <> "" THEN 3000 3010 A$=INKEY$:IF A$="" THEN 3010 3020 CHOICE=VAL(A$):IF CHOICE < 1 OR CHOICE > 6 THEN 3010 3030 FOR J=19 TO 23:LOCATE J,I:PRINT STRING$(30-32*MONO,32):NEXT 3040 LOCATE 21,I:IF CHOICE=2 THEN PRINT "Quiz: Normal or Reversed (N/R)" 3050 IF CHOICE=3 THEN PRINT "One moment please...":J=FRE("") 3060 IF CHOICE=4 THEN LOCATE ,I-1:PRINT "Use K - L keys to move, Z to shoot": J=FRE("") 3070 IF CHOICE<>2 THEN COLOR FG 3080 RETURN 3100 GOSUB 6460:COLOR ACCENT 3110 LOCATE 3,21-LEN(TITLE$)/2-19*MONO:PRINT TITLE$ 3120 A$=INKEY$:IF A$ <> "" THEN 3120 3130 LOCATE 8,8-19*MONO:PRINT "To change the display time,":COLOR FG 3140 LOCATE 11,10-19*MONO:PRINT "Press M for more time" 3150 LOCATE 13,10-19*MONO:PRINT "Press L for less time" 3160 COLOR ACCENT 3170 LOCATE 18,5-19*MONO:PRINT "Display time";SPED;"seconds per word. " 3180 LOCATE 23,2:PRINT CHR$(199);STRING$(36-40*MONO,196);CHR$(182) 3190 LOCATE 24,7-19*MONO:PRINT "Space Bar Starts Word Display"; 3200 A$=INKEY$:IF (A$="M" OR A$="m") AND SPED < 30 THEN SPED=SPED+1 3210 IF (A$="L" OR A$="l") AND SPED > 2 THEN SPED=SPED-1 3220 IF A$ <> " " THEN 3160 3230 COLOR FG:GOSUB 3260 3240 RETURN 3260 L=0:ESC=0 3280 WHILE L < LMAX 3290 CLS:FOR I=1 TO 1100:NEXT 3300 A$=INKEY$:IF A$ <> "" THEN 3300 3310 I=21-LEN(ARRAY$(L))/2-19*MONO:IF I < 1 THEN I=1 3320 LOCATE 2,I:PRINT ARRAY$(L):L=L+1 3330 FOR I=1 TO 310*SPED:NEXT 3340 A$=INKEY$:IF A$=CHR$(27) THEN ESC=-1:GOTO 3600 3360 I=21-LEN(ARRAY$(L))/2-19*MONO:IF I < 1 THEN I=1 3370 LOCATE 10,I 3380 PRINT ARRAY$(L):PRINT:L=L+1 3390 FOR I=1 TO 260*SPED:NEXT 3400 A$=INKEY$:IF A$=CHR$(27) THEN ESC=-1:GOTO 3600 3420 FOR I=0 TO 2 3430 A$=ARRAY$(L+I):I(I)=LEN(A$) 3440 IF LEFT$(A$,1)="*" THEN ARRAY$(L+I)=NAMEE$+RIGHT$(A$,LEN(A$)-1):GOTO 3480 3450 FOR J=2 TO I(I) 3460 IF MID$(A$,J,1)="*" THEN ARRAY$(L+I)=LEFT$(A$,J-1)+NAMEE$:IF J < I(I) THEN ARRAY$(L+I)=ARRAY$(L+I)+RIGHT$(A$,I(I)-J) 3470 NEXT J 3480 NEXT I 3490 FOR I=0 TO 2:I(I)=LEN(ARRAY$(L+I)):NEXT I 3500 M=I(0):IF I(1) > I(0) THEN M = I(1) 3510 IF I(2) > I(1) AND I(2) > I(0) THEN M=I(2) 3520 M=21-M/2-20*MONO:IF M < 1 THEN M=1 3530 LOCATE 17,M:PRINT ARRAY$(L):PRINT:L=L+1 3540 LOCATE ,M:PRINT ARRAY$(L):PRINT:L=L+1 3550 LOCATE ,M: PRINT ARRAY$(L):IF LEN(ARRAY$(L))> 2 THEN FOR I=1 TO 1500:NEXT 3560 L=L+4 3570 FOR I=1 TO 535*SPED:NEXT 3580 A$=INKEY$:IF A$=CHR$(27) THEN ESC=-1:GOTO 3600 3590 WEND 3600 RETURN 3620 A$=INKEY$:IF A$ <> "" THEN 3620 3630 A$=INKEY$ 3640 IF A$ <> "N" AND A$ <> "n" AND A$ <> "R" AND A$ <> "r" THEN 3630 3650 I=5-7*MONO 3660 LOCATE 21,I:PRINT STRING$(30,32):LOCATE 21,I:PRINT "One moment please..." 3670 J=FRE("") 3680 IF A$="N" OR A$="n" THEN COLUMN=-1 ELSE COLUMN=0 3690 GOSUB 4100 3710 WD=0:ESC=0:TTAL=0:RIGHT=0:TIME=0:RTEANSR=0:WANSR=0 3720 WD$=ARRAY$(QUIZ(WD)*8-NOT COLUMN) 3730 CLS:FOR I=1 TO 1000:NEXT 3740 I=20-(LEN(WD$)/2)-20*MONO:IF I < 2 THEN I=2 3750 COLOR FG:LOCATE 2,I:PRINT WD$:IF CLR THEN COLOR 1 3760 LOCATE ,3-4*MONO:PRINT STRING$(36-31*MONO,196):COLOR FG 3770 GOSUB 4170 3790 LOCATE 6 3800 FOR I=0 TO 3:LOCATE ,2-4*MONO:PRINT I+1;:LOCATE ,POS(0)-1:PRINT ". ";ANSR$ (I):PRINT:PRINT:NEXT I 3810 GOSUB 4310 3820 IF NOT (ESC AND FIRSTTIME) THEN TTAL=TTAL+1 3830 IF RTEANSR AND FIRSTTIME THEN RIGHT=RIGHT+1 3840 IF ESC THEN 3870 3850 IF (NOT REPETE AND WD < WRDS -1) OR (REPETE AND WD < WNSR-1) THEN WD=WD+1: GOTO 3720 3870 GOSUB 5800 3880 GOSUB 3920 3890 IF REPETE THEN 3710 3900 RETURN 3920 IF WANSR=0 THEN REPETE=0:GOTO 4080 3930 GOSUB 6460:J=5-3*MONO:LOCATE 3,J-1:L=J-1:COLOR ACCENT 3940 IF WANSR > 1 THEN PRINT "You missed ";: IF MONO THEN PRINT "(or needed help with) these words:" ELSE PRINT "these words." 3950 IF WANSR=1 THEN PRINT "You missed ";: IF MONO THEN PRINT "(or needed help with) this word:" ELSE PRINT "this word:" 3960 LOCATE 6:I=0:COLOR FG 3970 LOCATE ,J:PRINT ARRAY$(WANSR(I)*8) 3980 IF WANSR < 17 THEN PRINT 3990 IF (WANSR < 17 AND I=8) OR (WANSR > 16 AND I=12) THEN J=22-25*MONO:LOCATE 6 ,J 4000 IF I < WANSR-1 THEN I=I+1:GOTO 3970 4010 COLOR ACCENT 4020 LOCATE 24,L:IF WANSR > 1 THEN PRINT "Do you want to retake these words? ";: IF MONO THEN PRINT "(Y/N)"; 4022 IF WANSR < 2 THEN PRINT "Do you want to retake this word? ";: IF MONO THEN PRINT "(Y/N)"; 4030 A$=INKEY$:IF A$ <> "" THEN 4030 4040 A$=INKEY$: IF A$ <> "Y" AND A$<> "y" AND A$<> "N" AND A$<> "n" THEN 4040 4050 IF A$="N" OR A$="n" THEN REPETE=0 ELSE REPETE=-1 4060 FOR I=0 TO WANSR-1:QUIZ(I)=WANSR(I):NEXT 4070 WNSR=WANSR:COLOR FG 4080 RETURN 4100 WRDS=(LMAX+1)/8 4110 FOR I=0 TO WRDS-1:QUIZ(I)=26:NEXT 4120 FOR I=0 TO WRDS-1 4130 J%=RND(1)*WRDS:IF QUIZ(J%) <> 26 THEN 4130 ELSE QUIZ(J%)=I 4140 NEXT I 4150 RETURN 4170 FOR I=0 TO 3:ANSR$(I) = "":NEXT 4180 FOR ANSR=0 TO 3 4190 I%=RND(1)*WRDS:DUPE=0 4200 FOR I=0 TO ANSR:IF ANSR$(I)=ARRAY$(QUIZ(I%)*8-COLUMN) THEN DUPE=-1 4210 NEXT:IF DUPE THEN 4190 ELSE ANSR$(ANSR)=ARRAY$(QUIZ(I%)*8-COLUMN) 4220 NEXT 4240 K=0 4250 FOR I=0 TO 3 4260 IF ANSR$(I)=ARRAY$(QUIZ(WD)*8-COLUMN) THEN K=-1:RANS=I+1 4270 NEXT 4280 IF NOT K THEN I%=RND(1)*4:IF I% => 4 THEN 4280 ELSE ANSR$(I%)=ARRAY$(QUIZ (WD)*8-COLUMN):RANS=I%+1 4290 RETURN 4310 FIRSTTIME=-1:RTEANSR=0 4320 A$=INKEY$:IF A$ <> "" THEN 4320 4330 LOCATE 18,3-4*MONO 4340 PRINT "Answer? _";:LOCATE ,23-35*MONO:PRINT "Elapsed time";TIME 4350 GOSUB 4590 4360 LOCATE 18,23-35*MONO:COLOR FG:PRINT "Elapsed time";TIME; 4370 FOR J=1 TO 570:NEXT 4380 A$=INKEY$:IF A$ <> "" THEN I=ASC(A$):IF I > 90 THEN I=I-32 4390 IF (I > 48 AND I < 53) OR I=27 THEN 4420 ELSE FOR J=1 TO 570:NEXT 4400 A$=INKEY$:IF A$ <> "" THEN I=ASC(A$):IF I > 90 THEN I=I-32 4410 IF (I < 49 OR I > 52) AND I <> 27 THEN TIME=TIME+1:GOTO 4360 4420 IF I=27 THEN 4560: 'ESCAPE 4430 ANSR=VAL(CHR$(I)) 4440 IF NOT FIRSTTIME OR ANSR=RANS THEN LOCATE ,10-4*MONO:PRINT ANSR:PRINT 4450 IF ANSR=RANS THEN GOSUB 4670:GOTO 4540 4470 LOCATE 23+MONO,15-20*MONO 4480 IF FIRSTTIME THEN PRINT "Try again.":FIRSTTIME=0:WANSR(WANSR)=QUIZ(WD): WANSR=WANSR+1:A$="":I=0:GOTO 4320 4490 LOCATE 22+MONO,9-20*MONO:PRINT "The correct answer is";RANS;:LOCATE ,POS(0) -1:PRINT "." 4500 LOCATE ,15-20*MONO:PRINT " " 4510 RTEANSR=0 4520 COLOR FG:LOCATE 24+MONO,7-20*MONO:PRINT "Press space bar to continue"; 4540 A$=INKEY$ 4550 IF NOT RTEANSR AND (A$ <> " " AND A$ <> CHR$(27)) THEN 4540 4560 IF A$=CHR$(27) THEN ESC=-1 4570 RETURN 4590 COLOR BLUE 4600 LOCATE 21+MONO,2-4*MONO:PRINT CHR$(218)+STRING$(36-31*MONO,196);CHR$(191) 4610 LOCATE ,2-4*MONO:PRINT CHR$(179);:LOCATE ,39-35*MONO:PRINT CHR$(179) 4620 LOCATE ,2-4*MONO:PRINT CHR$(179);:LOCATE ,39-35*MONO:PRINT CHR$(179) 4630 LOCATE ,2-4*MONO:PRINT CHR$(179);:LOCATE ,39-35*MONO:PRINT CHR$(179); 4640 LOCATE 25+MONO,2-4*MONO:PRINT CHR$(192);STRING$(36-31*MONO,196);CHR$(217); 4650 RETURN 4670 RTEANSR=-1:I%=RND(1)*4+1:IF I%=OLDI% THEN 4670 4680 IF I%=1 THEN A$="That's right!" 4690 IF I%=2 THEN A$="Very good, "+NAMEE$+"." 4700 IF I%=3 THEN A$="Congratulations, "+NAMEE$+"!" 4710 IF I%=4 THEN A$="Way to go, "+NAMEE$+"!" 4720 IF I%=5 THEN A$="Keep it up, "+NAMEE$+"!" 4730 COLOR FG:I=20-LEN(A$)/2-20*MONO:IF I < 2 THEN I=2 4740 LOCATE 23+MONO,I:PRINT A$:IF NOT SOUNDD THEN FOR I=1 TO 2500:NEXT 4750 WHILE SOUNDD 4760 SNG%=RND(1)*6+1:IF SNG%=OSNG% OR (BDAY AND SNG%=7) THEN 4760 4770 IF OSNG% > 6 THEN SNG%=OSNG%+1 4780 OSNG%=SNG% 4790 IF SNG%=1 THEN RESTORE 4960 4800 IF SNG%=2 THEN RESTORE 4990 4810 IF SNG%=3 THEN RESTORE 5010 4820 IF SNG%=4 THEN RESTORE 5110 4830 IF SNG%=5 THEN RESTORE 5130 4840 IF SNG%=6 THEN RESTORE 5150 4850 IF SNG%=7 THEN RESTORE 5030 4860 IF SNG%=8 THEN RESTORE 5050 4870 IF SNG%=9 THEN RESTORE 5070 4880 IF SNG%=10 THEN RESTORE 5090:BDAY=-1:OSNG%=1 4890 READ ACCENTT 4900 READ I,J:IF J=0 THEN 4940 ELSE IF I=0 THEN I=30000 4910 SOUND I,J:IF ACCENTT THEN SOUND 30000,1 4920 GOTO 4900 4930 WEND 4940 RETURN 4960 DATA -1,349,2,349,1,349,1,0,1,349,1,349,1,349,1,0,1,349,1,349,1,466,1,0,1, 532,1,0,1,587,1,0,1 4970 DATA 349,1,349,1,349,1,0,1,349,1,349,1,349,1,0,1,587,1,587,1,523,1,0,1, 439,1,0,1,349,2,0,0 4990 DATA -1,349,2,466,2,587,2,698,3,0,1,587,3,698,6,0,0 5010 DATA -1,349,12,0,1,262,2,349,3,0,1,262,2,349,3,0,1,392,2,440,13,0,2, 349,13,0,0 5030 DATA -1,554,4,554,2,622,6,554,6,740,6,698,10,0,0 5050 DATA -1,554,4,554,2,622,6,554,6,831,6,740,10,0,0 5070 DATA -1,554,4,554,2,1109,6,932,6,740,6,698,6,622,10,0,0 5090 DATA -1,988,4,988,2,932,6,740,6,831,6,740,10,0,0 5110 DATA 0,277,2,294,1,311,1,330,1,392,1,415,1,440,1,466,1,494,1,532,1,554,1, 587,1,622,1,659,1,698,1,740,1,783,1,831,1,880,1,932,1,987,1,1047,1,1109,1, 0,0 5130 DATA 0,415,2,378,2,415,14,0,10,370,2,330,2,311,2,277,2,262,11,277,13,0,0 5150 DATA -1,415,2,415,2,415,2,330,15,0,5,370,2,370,2,370,2,311,15,0,0 5170 GOSUB 4100 5180 WD=0:COLUMN=0:TTAL=0:RIGHT=0:ESC=0:TIME=0:WANSR=0 5190 RTEANSR=0:CHANCES=0 5200 GOSUB 4170 5210 X=0:CLS 5220 A$=ARRAY$(QUIZ(WD)*8+5+X) 5230 J=1:K=LEN(A$):L=0 5240 IF K=0 THEN GOSUB 6460:LOCATE 10,7-20*MONO:PRINT "Sentence completion entries":PRINT:LOCATE ,8-20*MONO:PRINT "are either not present or":PRINT:LOCATE,9-20*MONO:PRINT "not properly formatted.":LOCATE 23,2-20*MONO:GOSUB 6400:GOTO 5580 5250 B$=MID$(A$,J,1):IF ASC(B$) > 27 THEN L=L+1 5260 IF B$ <> "_" AND J < K THEN J=J+1:GOTO 5250 5270 IF B$ <> "_" THEN X=X+1:GOTO 5220 5290 A$=ARRAY$(QUIZ(WD)*8+1):L=L+1 5300 K=20-LEN(A$)/2:IF K < 2 THEN K=2 5310 LOCATE 2,K-19*MONO:PRINT A$:IF CLR THEN COLOR 1 5320 LOCATE ,2-4*MONO:PRINT STRING$(37-31*MONO,196):COLOR FG 5330 FOR I=5 TO 7:LOCATE 10+2*(I-5),2-22*MONO:PRINT ARRAY$(QUIZ(WD)*8+I):PRINT: NEXT I 5340 GOSUB 4590 5350 COLOR FG:LOCATE 22+MONO,9-19*MONO:PRINT "Type in the missing word" 5360 LOCATE 24+MONO,9-19*MONO:PRINT "H = help ESC = quit"; 5370 LOCATE 10+2*X,L-22*MONO:COLOR 16+FG:PRINT "_";: COLOR FG:LOCATE ,POS(0)-1 5380 A$ = "":AN$=ARRAY$(QUIZ(WD)*8+X+5):AN=L-22*MONO:RIGHTANSR$=ARRAY$(QUIZ(WD) *8) 5390 P$=INKEY$:IF P$ <> "" THEN 5390 5400 P$=INKEY$:IF P$="" THEN 5400 ELSE IF P$ <> CHR$(13) THEN IF ASC(P$) >64 AND ASC(P$) < 97 THEN P$=CHR$(ASC(P$)+32) 5410 IF P$=CHR$(27) THEN 5550 5420 IF P$=CHR$(13) THEN 5460 5430 IF P$=CHR$(8) THEN GOSUB 5600:GOTO 5400 5440 IF ASC(P$) > 96 AND ASC(P$) < 123 AND LEN(A$) < LEN(RIGHTANSR$) THEN A$= A$+P$:PRINT P$;:IF LEN(A$) < LEN(RIGHTANSR$) THEN COLOR 16+FG:PRINT "_";: COLOR FG:LOCATE ,POS(0)-1 ELSE LOCATE ,POS(0)-1 5450 GOTO 5400 5460 IF A$="" THEN 5370 5470 IF LEN(A$) < LEN(RIGHTANSR$) THEN PRINT "_"; 5480 CHANCES=CHANCES+1 5490 IF CHANCES=1 THEN TTAL=TTAL+1 5500 IF A$="h" THEN GOSUB 5900:GOTO 5370 5510 GOSUB 5670 5520 IF RTEANSR AND CHANCES=1 THEN RIGHT=RIGHT+1 5530 IF NOT RTEANSR AND CHANCES < 3 THEN FOR I=1 TO 2000:NEXT:GOTO 5330 5540 IF (NOT REPETE AND WD < WRDS-1) OR (REPETE AND WD < WNSR-1) THEN WD=WD+1: GOTO 5190 5550 GOSUB 5800 5560 GOSUB 3920 5570 IF REPETE THEN 5180 5580 RETURN 5600 IF LEN(A$) < 2 THEN A$="" ELSE A$=LEFT$(A$,LEN(A$)-1) 5610 LOCATE ,AN:PRINT A$;:COLOR FG+16:PRINT "_";: COLOR FG:IF LEN(A$) < LEN (RIGHTANSR$)-1 THEN PRINT "_";:LOCATE ,POS(0)-2 ELSE LOCATE ,POS(0)-1 5620 GOTO 5640 5630 IF LEN(A$)=> LEN(RIGHTANSR$)-1 THEN PRINT " ": LOCATE 10 + 2 * X,1-22*MONO: PRINT AN$;:LOCATE ,AN:PRINT A$;:COLOR 16+FG:PRINT "_";:COLOR FG:LOCATE,POS (0)-1 5640 RETURN 5670 FOR I=1 TO LEN(A$) 5680 J=ASC(MID$(A$,I,1)) 5690 IF J > 64 AND J < 91 THEN MID$(A$,I,1)=CHR$(J+32) 5700 NEXT I 5720 IF A$=RIGHTANSR$ THEN LOCATE 18,1:PRINT STRING$(40,32):FOR I=22 TO 24 STEP 2:LOCATE I+MONO,8-20*MONO:PRINT STRING$(25,32);:NEXT:GOSUB 4670:GOTO 5780 5740 IF CHANCES=1 THEN WANSR(WANSR)=QUIZ(WD):WANSR=WANSR+1 5750 RTEANSR=0 5760 LOCATE 18,2-6*MONO:PRINT " ":FOR J=1 TO 100:NEXT 5770 LOCATE 18,2-6*MONO: IF CHANCES > 2 THEN B$ = STRING$(24,32): PRINT "The missing word is ";RIGHTANSR$;".":FOR I=22 TO 24:LOCATE I+MONO,9-19*MONO :PRINT B$;:NEXT:LOCATE 23+MONO,3-19*MONO:COLOR FG:GOSUB 6410 ELSE PRINT "Try again." 5780 RETURN 5800 IF TTAL=0 THEN 5880 5810 GOSUB 6460:I=7-9*MONO 5820 COLOR ACCENT:LOCATE 4,16-19*MONO:PRINT "Scoreboard":COLOR FG 5830 LOCATE 8,I:IF CHOICE=2 THEN PRINT "Elapsed time:";TIME 5840 PRINT:LOCATE ,I:PRINT "Total questions: ";TTAL 5850 PRINT:LOCATE ,I:PRINT "Number correct: ";RIGHT 5860 PRINT:J%=RIGHT/TTAL*100:LOCATE ,I:PRINT "Percentage correct: ";J%;"%" 5870 LOCATE 22,2:GOSUB 6370 5880 RETURN 5900 LOCATE 4,8-16*MONO:PRINT ANSR$(0) 5910 LOCATE 4,26-23*MONO:PRINT ANSR$(1) 5920 LOCATE 6,8-16*MONO:PRINT ANSR$(2) 5930 LOCATE 6,26-23*MONO:PRINT ANSR$(3) 5940 LOCATE 10+2*X,L-23*MONO:PRINT CHR$(95) 5950 IF CHANCES=1 THEN WANSR(WANSR)=QUIZ(WD):WANSR=WANSR+1 5960 RETURN 5980 GOSUB 6460:COLOR ACCENT 5990 LOCATE 3-MONO,4-5*MONO:PRINT "Welcome to Word Attack!" 6000 COLOR FG:I=5-4*MONO 6010 LOCATE 7-MONO,I:PRINT "Please type your first name then ";:IF NOT MONO THEN PRINT:PRINT:LOCATE ,I 6020 INPUT "press the ENTER key ",NAMEE$ 6030 IF NAMEE$="" THEN 6010 6040 IF LEN(NAMEE$) > 13 THEN INVALID=-1: GOTO 6070 ELSE INVALID=0 6050 K=ASC(MID$(NAMEE$,1)):IF K > 97 THEN K=K-32 6060 IF K < 65 OR K > 90 THEN INVALID=-1 ELSE INVALID=0 6070 IF INVALID THEN LOCATE 10+MONO,28-33*MONO:PRINT STRING$(11-7*MONO,32) 6080 IF INVALID THEN 6010 6090 MID$(NAMEE$,1,1)=CHR$(K) 6100 L=LEN(NAMEE$) 6110 FOR P=2 TO L 6120 N=ASC(MID$(NAMEE$,P,1)) 6130 IF N < 91 AND N > 64 THEN N=N+32 6140 MID$(NAMEE$,P,1)=CHR$(N) 6150 NEXT P 6160 LOCATE 13,I:PRINT NAMEE$;", do you want to ";:IF NOT MONO THEN PRINT:PRINT: LOCATE ,I 6170 PRINT "use sound effects? (Y/N)" 6180 A$=INKEY$:IF A$ <> "" THEN 6180 6190 A$=INKEY$:IF A$<> "Y" AND A$<> "y" AND A$<> "N" AND A$<> "n" THEN 6190 6200 IF A$="Y" OR A$="y" THEN SOUNDD=-1 ELSE SOUNDD=0 6210 LOCATE 19,I:PRINT "Do you have one disk drive ";:IF NOT MONO THEN PRINT:PRINT:LOCATE ,I 6220 PRINT "or two? (press 1 or 2)" 6230 A$=INKEY$:IF A$<>"" THEN 6230 6240 A$=INKEY$:IF A$ = "" OR (A$ <> "1" AND A$ <> "2") THEN 6240 6250 DD=VAL(A$) 6260 N=-1:COLOR FG 6270 RETURN 6290 GOSUB 6460:COLOR FG 6300 IF DD=2 THEN LOCATE 6,18-20*MONO:PRINT "Please" 6310 IF DD=1 THEN LOCATE 8,4-20*MONO:PRINT "Please remove the program diskette" 6320 LOCATE 14+4*(DD=2),9-20*MONO:PRINT "Insert the data diskette":IF DD=2 THEN LOCATE 14,12-20*MONO:PRINT "into disk drive B" 6330 GOSUB 6370 6340 N=0 6350 RETURN 6370 COLOR ACCENT 6380 LOCATE 23,2:PRINT CHR$(199);STRING$(36-40*MONO,196);CHR$(182) 6390 LOCATE 24,3-19*MONO 6400 COLOR ACCENT 6410 PRINT " Press space bar to continue ";:COLOR FG 6420 A$=INKEY$:IF A$ <> "" THEN 6420 6430 A$=INKEY$:IF A$ <> " " THEN 6430 6440 RETURN 6460 COLOR FG,BG:CLS:COLOR ACCENT:FOR I=1 TO 500:NEXT:LOCATE 1,1,0:L=2:R=39-40* MONO:A$=STRING$(36-40*MONO,205) 6470 LOCATE 1,L:PRINT CHR$(201);A$;CHR$(187):FOR I=2 TO 24:LOCATE I,L:PRINT CHR$ (186);:LOCATE ,R:PRINT CHR$(186);:NEXT:LOCATE 25,L:PRINT CHR$(200);A$;CHR$ (188);:COLOR FG 6480 RETURN 6500 GOSUB 6460:COLOR RED:FOR I=5-10*MONO TO 22-25*MONO STEP 17-15*MONO 6510 LOCATE 4,I:PRINT BOX$(0,1):LOCATE ,I:PRINT BOX$(1,1):FOR J=1 TO 2:LOCATE , I:PRINT BOX$(1,1):NEXT:LOCATE ,I:PRINT BOX$(2,1):NEXT 6520 COLOR ACCENT:LOCATE 6,10-12*MONO:PRINT "WORD" 6530 LOCATE 6,26-27*MONO:PRINT "ATTACK!" 6540 LOCATE 17,20-20*MONO:PRINT "By" 6550 LOCATE 19,11-20*MONO:PRINT "Richard Eckert and" 6560 LOCATE 21,10-20*MONO:PRINT "Janice Davidson, Ph.D." 6570 LOCATE 24,3-20*MONO:PRINT "Copyright 1983 Davidson & Associates"; 6580 OLDH=4:V=13 6590 RESTORE 1320:FOR I=1 TO 7:READ J:READ K:SOUND J,K:NEXT 6600 DATA 523,6,659,2,783,5,523,2,659,2,783,2,523,5 6610 FOR I=1 TO 800:NEXT 6630 FOR NEWH=7-12*MONO TO 27-30*MONO STEP 5-4*MONO:GOSUB 6980:FOR I=1 TO 300: NEXT:NEXT:FOR I=1 TO 800:NEXT 6650 FOR NEWH=21-28*MONO TO 9-13*MONO STEP-(6-3*MONO):GOSUB 6980:FOR I=1 TO 200: NEXT:NEXT:FOR I=1 TO 200:NEXT 6660 H=9-13*MONO:FOR I=50 TO 400 STEP 100:SOUND I,1:NEXT 6670 COLOR FG:LOCATE V+1,H:PRINT HEAD$(0):LOCATE ,H:PRINT HEAD$(1):SOUND 500,1 6680 FOR I=V-1 TO 6 STEP-1:LOCATE I,H:PRINT MAN$(0):LOCATE ,H:PRINT " ":NEXT 6690 COLOR RED:LOCATE 8,H:PRINT STRING$(4,177) 6700 COLOR BG,FG:LOCATE 5:FOR I=1 TO 3:LOCATE ,6-10*MONO:PRINT STRING$ (13-4*MONO,32):NEXT:LOCATE 6,H-NOT MONO:PRINT "WORD":COLOR FG,BG 6710 FOR I=1 TO 15:SOUND 850,1:SOUND 880,1:NEXT:FOR I=1 TO 400:NEXT 6730 FOR K=1 TO 3 6740 SOUND 1150,1:SOUND 1280,1:FOR I=13 TO 12 STEP-1:LOCATE I,H:PRINT HEAD$(0) :LOCATE ,H:PRINT HEAD$(1):LOCATE ,H:PRINT MAN$ (3):LOCATE ,H:PRINT " ": NEXT 6750 FOR I=11 TO 13:LOCATE I,H:PRINT " ":LOCATE ,H:PRINT HEAD$(0):LOCATE , H:PRINT HEAD$(1):LOCATE ,H:PRINT MAN$(3):NEXT 6760 NEXT:FOR I=1 TO 300:NEXT 6780 FOR NEWH=15-13*MONO TO 27-31*MONO STEP 6-3*MONO:GOSUB 6980:FOR I=1 TO 100: NEXT:NEXT 6800 FOR I=1 TO 300:NEXT:FOR I=50 TO 400 STEP 100:SOUND I,1:NEXT 6810 H=27-28*MONO:LOCATE V+1,H:PRINT HEAD$(0):LOCATE ,H:PRINT HEAD$(1) 6820 SOUND 500,1 6830 FOR I=V-1 TO 6 STEP-1:LOCATE I,H:PRINT MAN$(0):LOCATE ,H:PRINT " ":NEXT 6840 COLOR RED:LOCATE 8,H:PRINT STRING$(4,177) 6850 COLOR BG,FG:LOCATE 5:FOR I=1 TO 3:LOCATE,23-25*MONO:PRINT STRING$ (13-4*MONO,32):NEXT:LOCATE 6,26-27*MONO:PRINT "ATTACK!":COLOR FG,BG 6860 FOR I=1 TO 15:SOUND 950,1:SOUND 1000,1:NEXT:FOR I=1 TO 300:NEXT 6880 FOR I=1 TO 100:NEXT 6890 FOR K=1 TO 5 6900 SOUND 1200,1:SOUND 1350,1:FOR I = 13 TO 12 STEP -1:LOCATE I,H:PRINT HEAD$ (0):LOCATE ,H:PRINT HEAD$(1):LOCATE ,H:PRINT MAN$(3):LOCATE ,H:PRINT " ":NEXT 6910 FOR I=11 TO 13:LOCATE I,H:PRINT " ":LOCATE ,H:PRINT HEAD$(0):LOCATE ,H :PRINT HEAD$(1):LOCATE ,H:PRINT MAN$(3):NEXT 6920 NEXT:FOR I=1 TO 100:NEXT 6930 FOR NEWH=H-(4-5*MONO) TO 3-7*MONO STEP-(4-5*MONO):GOSUB 6980:NEXT 6940 LOCATE 13:FOR I=1 TO 4:LOCATE ,3-7*MONO:PRINT " ":NEXT 6950 FOR I=1 TO 1000:NEXT 6960 RETURN 6980 SOUND 1000,1:SOUND 523,1:LOCATE V:FOR I=0 TO 3:LOCATE ,OLDH:PRINT " ": NEXT:COLOR BRN:LOCATE V:FOR I=0 TO 3:LOCATE ,NEWH:PRINT MAN$(I):NEXT:OLDH= NEWH:COLOR FG 6990 RETURN 7010 GOSUB 6460:LOCATE 3-MONO,4-3*MONO 7020 PRINT "Other programs by the authors..." 7030 LOCATE 7-3*MONO,4-3*MONO 7040 PRINT "Math Blaster - Learn math facts "; 7050 IF NOT MONO THEN PRINT:PRINT:LOCATE ,4 7060 PRINT "with an action-filled arcade game." 7070 FOR I=1 TO 4000:NEXT:IF MONO THEN PRINT 7080 PRINT:PRINT:LOCATE ,4-3*MONO 7090 PRINT "The Speed Reader -";:PRINT SPC(-MONO) " Build your "; 7100 IF NOT MONO THEN PRINT:PRINT:LOCATE ,4 7110 PRINT "reading speed and comprehension." 7120 FOR I=1 TO 4000:NEXT:IF MONO THEN PRINT 7130 PRINT:PRINT:LOCATE ,4-3*MONO 7140 PRINT "Spanish for the Traveler -";:PRINT SPC(-MONO) " Learn "; 7150 IF NOT MONO THEN PRINT:PRINT:LOCATE ,4 7160 PRINT "the language and make your trip" 7170 PRINT:LOCATE ,4-3*MONO 7180 PRINT "more enjoyable." 7190 FOR I=1 TO 9000:NEXT 7200 COLOR 7,0:CLS 7210 RETURN 7230 GOSUB 6460:I=5-15*MONO 7240 LOCATE 5,I-1:PRINT "Which monitor do you have?" 7250 LOCATE 7,I:PRINT "1> IBM Monochrome Display":PRINT 7260 LOCATE ,I:PRINT "2> TV or other monitor":PRINT 7270 LOCATE ,I:PRINT "Please press 1 or 2"; 7280 IF INKEY$ <> "" THEN 7280 7290 A$=INKEY$:IF A$ <> "1" AND A$ <> "2" THEN 7290 7300 IF A$="2" THEN W=40:MONO=0:CLR=-1 ELSE W=80:MONO=-1:CLR=0 7310 LOCATE 15,I-1:PRINT "Select the display color:" 7320 LOCATE 17,I:PRINT "1> Dark printing/light background":PRINT 7330 LOCATE ,I:PRINT "2> Light printing/dark background":PRINT 7340 IF INKEY$ <> "" THEN 7340 7350 LOCATE ,I:PRINT "Please press 1 or 2" 7360 A$=INKEY$:IF A$ <> "1" AND A$ <> "2" THEN 7360 7370 IF A$="1" THEN FG=0:BG=7 ELSE FG=7:BG=0 7380 COLOR FG,BG:CLS:WIDTH W:GOSUB 1680:IF CLR THEN SCREEN ,1 ELSE SCREEN ,0 7390 COLOR FG,BG 7400 RETURN 7420 A$="":CLS:FOR I=1 TO 1000:NEXT:GOSUB 6460:LOCATE 6,14-20*MONO 7430 PRINT "Word Attack!":FOR I=1 TO 3000:NEXT:H=6-20*MONO 7440 LOCATE 10,H:PRINT "is a vocabulary program which" 7450 PRINT:LOCATE ,H:PRINT "includes a fast-action arcade":PRINT:LOCATE ,H 7460 PRINT "game. Learning new words is ":PRINT:LOCATE ,H 7470 PRINT "fun with Word Attack!":FOR I=1 TO 8000:NEXT 7480 A$=INKEY$:IF A$=CHR$(27) THEN 8220 ELSE IF A$ <> "" THEN 7480 7490 FOR I=10 TO 16 STEP 2:LOCATE I,H:PRINT STRING$(33,32):NEXT 7500 FOR I=1 TO 3000:NEXT:H=5-20*MONO 7510 A$=INKEY$:IF A$=CHR$(27) THEN 8220 ELSE IF A$ <> "" THEN 7510 7520 LOCATE 10,H+3:PRINT "was designed by teachers ":PRINT:LOCATE ,H 7530 PRINT "and tested at the educational":PRINT:LOCATE ,H+1 7540 PRINT "facility of Upward Bound in":PRINT:LOCATE ,H+2 7550 PRINT "Palos Verdes, California.":FOR I=1 TO 8000:NEXT 7560 A$=INKEY$:IF A$=CHR$(27) THEN 8220 ELSE IF A$ <> "" THEN 7560 7570 FOR I=10 TO 16 STEP 2:LOCATE I,H:PRINT STRING$(33,32):NEXT 7580 FOR I=1 TO 2000:NEXT:LOCATE 10,H 7590 PRINT "includes twenty-seven carefully ":PRINT:LOCATE ,7-20*MONO 7600 PRINT "prepared word lists divided":PRINT:LOCATE ,7-20*MONO 7610 PRINT "into nine difficulty levels.":FOR I=1 TO 8000:NEXT 7620 A$=INKEY$:IF A$=CHR$(27) THEN 8220 ELSE IF A$ <> "" THEN 7620 7630 FOR I=6 TO 14 STEP 2:LOCATE I,5-20*MONO:PRINT STRING$(34,32):NEXT 7640 FOR I=1 TO 1000:NEXT:H=13-20*MONO 7650 LOCATE 4,4-20*MONO:PRINT "Each level has three word lists..." 7660 LOCATE 9,H:PRINT "1. Adjectives":PRINT:LOCATE ,H:PRINT "2. Nouns" 7670 PRINT:LOCATE ,H:PRINT "3. Verbs":FOR I=1 TO 5000:NEXT 7680 H=4-12*MONO:LOCATE 18,H:PRINT "The twenty-seven word lists make " 7690 PRINT:LOCATE ,H-10*MONO 7700 PRINT "Word Attack! a complete vocabulary ";:IF MONO THEN 7720 7710 PRINT:PRINT:LOCATE ,H 7720 PRINT "program." 7730 FOR I=1 TO 5000:NEXT:CLS:FOR I=1 TO 2000:NEXT:GOSUB 6460 7740 A$=INKEY$:IF A$=CHR$(27) THEN 8220 ELSE IF A$ <> "" THEN 7740 7750 H=4-17*MONO:LOCATE 4,7-21*MONO:PRINT "Word Attack! also includes" 7760 FOR I=1 TO 2000:NEXT:LOCATE 9,H:PRINT CHR$(14);:LOCATE ,8-20*MONO 7770 PRINT "optional use of sound effects,":FOR I=1 TO 3000:NEXT 7780 LOCATE 13,H:PRINT CHR$(15);:LOCATE ,8-20*MONO 7790 PRINT "a complete instruction manual":PRINT:LOCATE ,8-20*MONO 7800 PRINT "for using the program, and":FOR I=1 TO 3000:NEXT 7810 LOCATE 19,H:PRINT CHR$(15);:LOCATE ,8-20*MONO 7820 PRINT "a full editor for making new":PRINT:LOCATE ,8-20*MONO 7830 PRINT "new word lists.":FOR I=1 TO 5000:NEXT:B$=STRING$(35-2*MONO,32) 7840 A$=INKEY$:IF A$=CHR$(27) THEN 8220 ELSE IF A$ <> "" THEN 7840 7850 LOCATE 4:FOR I=1 TO 18:LOCATE ,4-17*MONO:PRINT B$:NEXT 7860 FOR I=1 TO 1000:NEXT 7870 LOCATE 10,4-12*MONO:PRINT "The following learning activities "; 7880 IF NOT MONO THEN PRINT:PRINT:LOCATE ,13 7890 PRINT "are included...":FOR I=1 TO 5000:NEXT 7900 FOR I=10 TO 12:LOCATE I,4-12*MONO:PRINT STRING$(35-25*MONO,32):NEXT 7910 FOR I=1 TO 1000:NEXT:LOCATE 4,4-5*MONO:PRINT "1. WORD DISPLAY" 7920 H=4-5*MONO:LOCATE ,H:PRINT "Vocabulary words and their":LOCATE ,H 7930 PRINT "definitions are displayed.":FOR I=1 TO 5000:NEXT 7940 A$=INKEY$:IF A$=CHR$(27) THEN 8220 ELSE IF A$ <> "" THEN 7940 7950 PRINT:PRINT:LOCATE ,4-15*MONO:PRINT "2. MULTIPLE CHOICE QUIZ":H=4-15*MONO 7960 LOCATE ,H:PRINT "Vocabulary words are displayed":LOCATE ,H 7970 PRINT "and the user selects the best ":LOCATE ,H:PRINT "definition." 7980 FOR I=1 TO 5000:NEXT:H=4-25*MONO:PRINT:PRINT:LOCATE ,H 7990 PRINT "3. SENTENCE COMPLETION":LOCATE ,H 8000 PRINT "A sentence is displayed and the":LOCATE ,H 8010 PRINT "user types in the missing word.":FOR I=1 TO 5000:NEXT 8020 A$=INKEY$:IF A$=CHR$(27) THEN 8220 ELSE IF A$ <> "" THEN 8020 8030 H=4-35*MONO:PRINT:PRINT:LOCATE ,H:PRINT "4. PLAY WORD ATTACK!" 8040 LOCATE ,H:PRINT "The user shoots the correct word ":LOCATE ,H 8050 PRINT "in a fast-paced arcade game.":FOR I=1 TO 6000:NEXT 8060 A$=INKEY$:IF A$=CHR$(27) THEN 8220 ELSE IF A$ <> "" THEN 8060 8070 CLS:FOR I=1 TO 1000:NEXT:GOSUB 6460 8080 LOCATE 6,15-19*MONO:PRINT "Word Attack!":H=4-20*MONO 8090 LOCATE 10-MONO,H:PRINT "combines four learning activities " 8100 PRINT:LOCATE ,H:PRINT "and extensive data files to make " 8110 PRINT:LOCATE ,H:PRINT "an effective vocabulary building " 8120 PRINT:LOCATE ,H:PRINT "program." 8130 FOR I=1 TO 7000:NEXT 8140 A$=INKEY$:IF A$=CHR$(27) THEN 8220 ELSE IF A$ <> "" THEN 8140 8150 CLS:FOR I=1 TO 2000:NEXT 8160 LOCATE 23,5-20*MONO:PRINT "Press ESC key at any time to exit" 8170 FOR I=1 TO 4000:NEXT:CLS:FOR I=1 TO 1000:NEXT 8180 A$=INKEY$:IF A$=CHR$(27) THEN 8220 ELSE IF A$ <> "" THEN 8180 8190 GOSUB 6500: 'TITLE PAGE 8200 A$=INKEY$:IF A$=CHR$(27) THEN 8220 ELSE IF A$ <> "" THEN 8200 8210 GOTO 7420: 'RERUN DEMO 8220 RETURN 8240 GOSUB 6460:LOCATE 8,14-20*MONO:PRINT "Loading Editor":PRINT 8250 ON ERROR GOTO 8270 8260 CHAIN "EDITOR.BAS",36 8270 LOCATE 8,10-20*MONO:PRINT "Unable to Load Editor" 8280 LOCATE 12,9-20*MONO:PRINT "Insert Program Diskette" 8290 LOCATE 15,13-20*MONO:PRINT "if necessary" 8300 RESUME 8310 8310 ON ERROR GOTO 0 8320 GOSUB 6370:GOSUB 1680 8330 RETURN